#ifndef __EV_SEC_ISL_SN_DATA_SUB_H__
#define __EV_SEC_ISL_SN_DATA_SUB_H__


#include<stdint.h>
#include<string>
#include<vector>
#include"rapidjson/document.h"


namespace SC_SUN
{

struct EvSecIslSNDataSub
{

//////链路基本信息//////
/*
长度：5位
范围：1-SEC_NUM
格式：SEC+XXXXX
【SEC0000*】
【SEC000**】
【SEC00***】
【SEC0****】
【SEC*****】
*/
std::string SEC_SN;                             ///< 星间信息切片序号
double SEC_ST;                                  ///< 星间信息切片仿真时
uint64_t SEC_NUM;                               ///< 星间信息切片数量

//////终端基本信息//////
/*
长度：6位
范围：1-SEC_ISL_NUM
格式：SEC_ISL+XXXXXX
【SEC_ISL00000*】
【SEC_ISL0000**】
【SEC_ISL000***】
【SEC_ISL00****】
【SEC_ISL0****】
【SEC_ISL******】

*/
std::string SEC_ISL_SN;                         ///< 星间链路序号
std::string SEC_ISL_SAT1;                       ///< 星间链路终端卫星1,SAT_SN
std::string SEC_ISL_SAT2;                       ///< 星间链路终端卫星2，SAT_SN

//////切片基本信息//////
double SEC_ISL_TSAT_POS_HF[3];                  ///< 卫星1发送位置矢量
double SEC_ISL_TSAT_VEL_HF[3];                  ///< 卫星1发送速度矢量
double SEC_ISL_RSAT_POS_HF[3];                  ///< 卫星2接收位置矢量
double SEC_ISL_RSAT_VEL_HF[3];                  ///< 卫星2接收速度矢量
double SEC_ISL_TSAT_POS_MS[3];                  ///< 卫星1发送位置矢量
double SEC_ISL_TSAT_VEL_MS[3];                  ///< 卫星1发送速度矢量
double SEC_ISL_RSAT_POS_MS[3];                  ///< 卫星2接收位置矢量
double SEC_ISL_RSAT_VEL_MS[3];                  ///< 卫星2接收速度矢量
double SEC_ISL_CLER;                            ///< 星钟误差
double SEC_ISL_RPS_HF[3];                       ///< 高精度星间相对位置
double SEC_ISL_RVL_HF[3];                       ///< 高精度星间相对速度
double SEC_ISL_RPS_ER[3];                       ///< 带误差的星间相对位置
double SEC_ISL_RVL_ER[3];                       ///< 带误差的星间相对速度
double SEC_ISL_RVL_HD;                          ///< 硬件总延迟
double SEC_ISL_TL;                              ///< 链路持续时间

//////环境信息//////
double EAR_APD;                                 ///< 大气密度
double EAR_NED;                                 ///< 电离层电子密度
double EAR_NER;                                 ///< 电离层误差

//////微波测量信息//////
double SEC_ISL_MWR_HF;                          ///< 微波测量高精度相对距离
double SEC_ISL_MWV_HF;                          ///< 微波测量高精度相对速度
double SEC_ISL_MWA_HF;                          ///< 微波测量高精度相对角度
double SEC_ISL_MWT_HF;                          ///< 微波测量高精度相对时间
double SEC_ISL_MWR_ER;                          ///< 微波测量带误差相对距离
double SEC_ISL_MWV_ER;                          ///< 微波测量带误差相对速度
double SEC_ISL_MWA_ER;                          ///< 微波测量带误差相对角度
double SEC_ISL_MWT_ER;                          ///< 微波测量带误差相对时间

//////激光测量信息//////
double SEC_ISL_LSR_HF;                          ///< 激光测量高精度相对距离
double SEC_ISL_LSV_HF;                          ///< 激光测量高精度相对速度
double SEC_ISL_LSA_HF;                          ///< 激光测量高精度相对角度
double SEC_ISL_LST_HF;                          ///< 激光测量高精度相对时间
double SEC_ISL_LSR_ER;                          ///< 激光测量带误差相对距离
double SEC_ISL_LSV_ER;                          ///< 激光测量带误差相对速度
double SEC_ISL_LSA_ER;                          ///< 激光测量带误差相对角度
double SEC_ISL_LST_ER;                          ///< 激光测量带误差相对时间


auto ObjToJsonObject(rapidjson::Document& doc)
{
    using namespace rapidjson;

    Value obj(kObjectType);

    obj.AddMember(Value("SEC_SN", doc.GetAllocator()), Value(SEC_SN.data(), doc.GetAllocator()), doc.GetAllocator());
    obj.AddMember(Value("SEC_ST", doc.GetAllocator()), Value(SEC_ST), doc.GetAllocator());
    obj.AddMember(Value("SEC_NUM", doc.GetAllocator()), Value(SEC_NUM), doc.GetAllocator());

    obj.AddMember(Value("SEC_ISL_SN", doc.GetAllocator()), Value(SEC_ISL_SN.data(), doc.GetAllocator()), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_SAT1", doc.GetAllocator()), Value(SEC_ISL_SAT1.data(), doc.GetAllocator()), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_SAT2", doc.GetAllocator()), Value(SEC_ISL_SAT2.data(), doc.GetAllocator()), doc.GetAllocator());

    Value value1(kArrayType);
    value1.PushBack(SEC_ISL_TSAT_POS_HF[0], doc.GetAllocator());
    value1.PushBack(SEC_ISL_TSAT_POS_HF[1], doc.GetAllocator());
    value1.PushBack(SEC_ISL_TSAT_POS_HF[2], doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_TSAT_POS_HF", doc.GetAllocator()), value1, doc.GetAllocator());

    Value value2(kArrayType);
    value2.PushBack(SEC_ISL_TSAT_VEL_HF[0], doc.GetAllocator());
    value2.PushBack(SEC_ISL_TSAT_VEL_HF[1], doc.GetAllocator());
    value2.PushBack(SEC_ISL_TSAT_VEL_HF[2], doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_TSAT_VEL_HF", doc.GetAllocator()), value2, doc.GetAllocator());

    Value value3(kArrayType);
    value3.PushBack(SEC_ISL_RSAT_POS_HF[0], doc.GetAllocator());
    value3.PushBack(SEC_ISL_RSAT_POS_HF[1], doc.GetAllocator());
    value3.PushBack(SEC_ISL_RSAT_POS_HF[2], doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_RSAT_POS_HF", doc.GetAllocator()), value3, doc.GetAllocator());

    Value value4(kArrayType);
    value4.PushBack(SEC_ISL_RSAT_VEL_HF[0], doc.GetAllocator());
    value4.PushBack(SEC_ISL_RSAT_VEL_HF[1], doc.GetAllocator());
    value4.PushBack(SEC_ISL_RSAT_VEL_HF[2], doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_RSAT_VEL_HF", doc.GetAllocator()), value4, doc.GetAllocator());

    Value value5(kArrayType);
    value5.PushBack(SEC_ISL_TSAT_POS_MS[0], doc.GetAllocator());
    value5.PushBack(SEC_ISL_TSAT_POS_MS[1], doc.GetAllocator());
    value5.PushBack(SEC_ISL_TSAT_POS_MS[2], doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_TSAT_POS_MS", doc.GetAllocator()), value5, doc.GetAllocator());


    Value value6(kArrayType);
    value6.PushBack(SEC_ISL_TSAT_VEL_MS[0], doc.GetAllocator());
    value6.PushBack(SEC_ISL_TSAT_VEL_MS[1], doc.GetAllocator());
    value6.PushBack(SEC_ISL_TSAT_VEL_MS[2], doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_TSAT_VEL_MS", doc.GetAllocator()), value6, doc.GetAllocator());

    Value value7(kArrayType);
    value7.PushBack(SEC_ISL_RSAT_POS_MS[0], doc.GetAllocator());
    value7.PushBack(SEC_ISL_RSAT_POS_MS[1], doc.GetAllocator());
    value7.PushBack(SEC_ISL_RSAT_POS_MS[2], doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_RSAT_POS_MS", doc.GetAllocator()), value7, doc.GetAllocator());

    Value value8(kArrayType);
    value8.PushBack(SEC_ISL_RSAT_VEL_MS[0], doc.GetAllocator());
    value8.PushBack(SEC_ISL_RSAT_VEL_MS[1], doc.GetAllocator());
    value8.PushBack(SEC_ISL_RSAT_VEL_MS[2], doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_RSAT_VEL_MS", doc.GetAllocator()), value8, doc.GetAllocator());

    obj.AddMember(Value("SEC_ISL_CLER", doc.GetAllocator()), Value(SEC_ISL_CLER), doc.GetAllocator());

    Value value9(kArrayType);
    value9.PushBack(SEC_ISL_RPS_HF[0], doc.GetAllocator());
    value9.PushBack(SEC_ISL_RPS_HF[1], doc.GetAllocator());
    value9.PushBack(SEC_ISL_RPS_HF[2], doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_RPS_HF", doc.GetAllocator()), value9, doc.GetAllocator());

    Value value10(kArrayType);
    value10.PushBack(SEC_ISL_RVL_HF[0], doc.GetAllocator());
    value10.PushBack(SEC_ISL_RVL_HF[1], doc.GetAllocator());
    value10.PushBack(SEC_ISL_RVL_HF[2], doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_RVL_HF", doc.GetAllocator()), value10, doc.GetAllocator());

    Value value11(kArrayType);
    value11.PushBack(SEC_ISL_RPS_ER[0], doc.GetAllocator());
    value11.PushBack(SEC_ISL_RPS_ER[1], doc.GetAllocator());
    value11.PushBack(SEC_ISL_RPS_ER[2], doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_RPS_ER", doc.GetAllocator()), value11, doc.GetAllocator());

    Value value12(kArrayType);
    value12.PushBack(SEC_ISL_RVL_ER[0], doc.GetAllocator());
    value12.PushBack(SEC_ISL_RVL_ER[1], doc.GetAllocator());
    value12.PushBack(SEC_ISL_RVL_ER[2], doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_RVL_ER", doc.GetAllocator()), value12, doc.GetAllocator());

    obj.AddMember(Value("SEC_ISL_RVL_HD", doc.GetAllocator()), Value(SEC_ISL_RVL_HD), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_TL", doc.GetAllocator()), Value(SEC_ISL_TL), doc.GetAllocator());

    obj.AddMember(Value("EAR_APD", doc.GetAllocator()), Value(EAR_APD), doc.GetAllocator());
    obj.AddMember(Value("EAR_NED", doc.GetAllocator()), Value(EAR_NED), doc.GetAllocator());
    obj.AddMember(Value("EAR_NER", doc.GetAllocator()), Value(EAR_NER), doc.GetAllocator());

    obj.AddMember(Value("SEC_ISL_MWR_HF", doc.GetAllocator()), Value(SEC_ISL_MWR_HF), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_MWV_HF", doc.GetAllocator()), Value(SEC_ISL_MWV_HF), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_MWA_HF", doc.GetAllocator()), Value(SEC_ISL_MWA_HF), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_MWT_HF", doc.GetAllocator()), Value(SEC_ISL_MWT_HF), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_MWR_ER", doc.GetAllocator()), Value(SEC_ISL_MWR_ER), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_MWV_ER", doc.GetAllocator()), Value(SEC_ISL_MWV_ER), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_MWA_ER", doc.GetAllocator()), Value(SEC_ISL_MWA_ER), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_MWT_ER", doc.GetAllocator()), Value(SEC_ISL_MWT_ER), doc.GetAllocator());

    obj.AddMember(Value("SEC_ISL_LSR_HF", doc.GetAllocator()), Value(SEC_ISL_LSR_HF), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_LSV_HF", doc.GetAllocator()), Value(SEC_ISL_LSV_HF), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_LSA_HF", doc.GetAllocator()), Value(SEC_ISL_LSA_HF), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_LST_HF", doc.GetAllocator()), Value(SEC_ISL_LST_HF), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_LSR_ER", doc.GetAllocator()), Value(SEC_ISL_LSR_ER), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_LSV_ER", doc.GetAllocator()), Value(SEC_ISL_LSV_ER), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_LSA_ER", doc.GetAllocator()), Value(SEC_ISL_LSA_ER), doc.GetAllocator());
    obj.AddMember(Value("SEC_ISL_LST_ER", doc.GetAllocator()), Value(SEC_ISL_LST_ER), doc.GetAllocator());

    return obj;
}


static EvSecIslSNDataSub JsonObjectToObject(rapidjson::GenericObject<true, rapidjson::Value> obj)
{
    using namespace rapidjson;

    EvSecIslSNDataSub ret;

    ret.SEC_SN = obj["SEC_SN"].GetString();
    ret.SEC_ST = obj["SEC_ST"].GetDouble();
    ret.SEC_NUM = obj["SEC_NUM"].GetUint64();

    ret.SEC_ISL_SN = obj["SEC_ISL_SN"].GetString();
    ret.SEC_ISL_SAT1 = obj["SEC_ISL_SAT1"].GetString();
    ret.SEC_ISL_SAT2 = obj["SEC_ISL_SAT2"].GetString();

    auto array1 = obj["SEC_ISL_TSAT_POS_HF"].GetArray();
    ret.SEC_ISL_TSAT_POS_HF[0] = array1[0].GetDouble();
    ret.SEC_ISL_TSAT_POS_HF[1] = array1[1].GetDouble();
    ret.SEC_ISL_TSAT_POS_HF[2] = array1[2].GetDouble();

    auto array2 = obj["SEC_ISL_TSAT_VEL_HF"].GetArray();
    ret.SEC_ISL_TSAT_VEL_HF[0] = array2[0].GetDouble();
    ret.SEC_ISL_TSAT_VEL_HF[1] = array2[1].GetDouble();
    ret.SEC_ISL_TSAT_VEL_HF[2] = array2[2].GetDouble();

    auto array3 = obj["SEC_ISL_RSAT_POS_HF"].GetArray();
    ret.SEC_ISL_RSAT_POS_HF[0] = array3[0].GetDouble();
    ret.SEC_ISL_RSAT_POS_HF[1] = array3[1].GetDouble();
    ret.SEC_ISL_RSAT_POS_HF[2] = array3[2].GetDouble();

    auto array4 = obj["SEC_ISL_RSAT_VEL_HF"].GetArray();
    ret.SEC_ISL_RSAT_VEL_HF[0] = array4[0].GetDouble();
    ret.SEC_ISL_RSAT_VEL_HF[1] = array4[1].GetDouble();
    ret.SEC_ISL_RSAT_VEL_HF[2] = array4[2].GetDouble();

    auto array5 = obj["SEC_ISL_TSAT_POS_MS"].GetArray();
    ret.SEC_ISL_TSAT_POS_MS[0] = array5[0].GetDouble();
    ret.SEC_ISL_TSAT_POS_MS[1] = array5[1].GetDouble();
    ret.SEC_ISL_TSAT_POS_MS[2] = array5[2].GetDouble();

    auto array6 = obj["SEC_ISL_TSAT_VEL_MS"].GetArray();
    ret.SEC_ISL_TSAT_VEL_MS[0] = array6[0].GetDouble();
    ret.SEC_ISL_TSAT_VEL_MS[1] = array6[1].GetDouble();
    ret.SEC_ISL_TSAT_VEL_MS[2] = array6[2].GetDouble();

    auto array7 = obj["SEC_ISL_RSAT_POS_MS"].GetArray();
    ret.SEC_ISL_RSAT_POS_MS[0] = array7[0].GetDouble();
    ret.SEC_ISL_RSAT_POS_MS[1] = array7[1].GetDouble();
    ret.SEC_ISL_RSAT_POS_MS[2] = array7[2].GetDouble();

    auto array8 = obj["SEC_ISL_RSAT_VEL_MS"].GetArray();
    ret.SEC_ISL_RSAT_VEL_MS[0] = array8[0].GetDouble();
    ret.SEC_ISL_RSAT_VEL_MS[1] = array8[1].GetDouble();
    ret.SEC_ISL_RSAT_VEL_MS[2] = array8[2].GetDouble();

    ret.SEC_ISL_CLER = obj["SEC_ISL_CLER"].GetDouble();

    auto array9 = obj["SEC_ISL_RPS_HF"].GetArray();
    ret.SEC_ISL_RPS_HF[0] = array9[0].GetDouble();
    ret.SEC_ISL_RPS_HF[1] = array9[1].GetDouble();
    ret.SEC_ISL_RPS_HF[2] = array9[2].GetDouble();

    auto array10 = obj["SEC_ISL_RVL_HF"].GetArray();
    ret.SEC_ISL_RVL_HF[0] = array10[0].GetDouble();
    ret.SEC_ISL_RVL_HF[1] = array10[1].GetDouble();
    ret.SEC_ISL_RVL_HF[2] = array10[2].GetDouble();

    auto array11 = obj["SEC_ISL_RPS_ER"].GetArray();
    ret.SEC_ISL_RPS_ER[0] = array11[0].GetDouble();
    ret.SEC_ISL_RPS_ER[1] = array11[1].GetDouble();
    ret.SEC_ISL_RPS_ER[2] = array11[2].GetDouble();

    auto array12 = obj["SEC_ISL_RVL_ER"].GetArray();
    ret.SEC_ISL_RVL_ER[0] = array12[0].GetDouble();
    ret.SEC_ISL_RVL_ER[1] = array12[1].GetDouble();
    ret.SEC_ISL_RVL_ER[2] = array12[2].GetDouble();

    ret.SEC_ISL_RVL_HD = obj["SEC_ISL_RVL_HD"].GetDouble();
    ret.SEC_ISL_TL = obj["SEC_ISL_TL"].GetDouble();

    ret.EAR_APD = obj["EAR_APD"].GetDouble();
    ret.EAR_NED = obj["EAR_NED"].GetDouble();
    ret.EAR_NER = obj["EAR_NER"].GetDouble();

    ret.SEC_ISL_MWR_HF = obj["SEC_ISL_MWR_HF"].GetDouble();
    ret.SEC_ISL_MWV_HF = obj["SEC_ISL_MWV_HF"].GetDouble();
    ret.SEC_ISL_MWA_HF = obj["SEC_ISL_MWA_HF"].GetDouble();
    ret.SEC_ISL_MWT_HF = obj["SEC_ISL_MWT_HF"].GetDouble();
    ret.SEC_ISL_MWR_ER = obj["SEC_ISL_MWR_ER"].GetDouble();
    ret.SEC_ISL_MWV_ER = obj["SEC_ISL_MWV_ER"].GetDouble();
    ret.SEC_ISL_MWA_ER = obj["SEC_ISL_MWA_ER"].GetDouble();
    ret.SEC_ISL_MWT_ER = obj["SEC_ISL_MWT_ER"].GetDouble();

    ret.SEC_ISL_LSR_HF = obj["SEC_ISL_LSR_HF"].GetDouble();
    ret.SEC_ISL_LSV_HF = obj["SEC_ISL_LSV_HF"].GetDouble();
    ret.SEC_ISL_LSA_HF = obj["SEC_ISL_LSA_HF"].GetDouble();
    ret.SEC_ISL_LST_HF = obj["SEC_ISL_LST_HF"].GetDouble();
    ret.SEC_ISL_LSR_ER = obj["SEC_ISL_LSR_ER"].GetDouble();
    ret.SEC_ISL_LSV_ER = obj["SEC_ISL_LSV_ER"].GetDouble();
    ret.SEC_ISL_LSA_ER = obj["SEC_ISL_LSA_ER"].GetDouble();
    ret.SEC_ISL_LST_ER = obj["SEC_ISL_LST_ER"].GetDouble();

    return ret;
}


static EvSecIslSNDataSub JsonObjectToObject2(rapidjson::GenericObject<false, rapidjson::Value> obj)
{
    using namespace rapidjson;

    EvSecIslSNDataSub ret;

    ret.SEC_SN = obj["SEC_SN"].GetString();
    ret.SEC_ST = obj["SEC_ST"].GetDouble();
    ret.SEC_NUM = obj["SEC_NUM"].GetUint64();

    ret.SEC_ISL_SN = obj["SEC_ISL_SN"].GetString();
    ret.SEC_ISL_SAT1 = obj["SEC_ISL_SAT1"].GetString();
    ret.SEC_ISL_SAT2 = obj["SEC_ISL_SAT2"].GetString();

    auto array1 = obj["SEC_ISL_TSAT_POS_HF"].GetArray();
    ret.SEC_ISL_TSAT_POS_HF[0] = array1[0].GetDouble();
    ret.SEC_ISL_TSAT_POS_HF[1] = array1[1].GetDouble();
    ret.SEC_ISL_TSAT_POS_HF[2] = array1[2].GetDouble();

    auto array2 = obj["SEC_ISL_TSAT_VEL_HF"].GetArray();
    ret.SEC_ISL_TSAT_VEL_HF[0] = array2[0].GetDouble();
    ret.SEC_ISL_TSAT_VEL_HF[1] = array2[1].GetDouble();
    ret.SEC_ISL_TSAT_VEL_HF[2] = array2[2].GetDouble();

    auto array3 = obj["SEC_ISL_RSAT_POS_HF"].GetArray();
    ret.SEC_ISL_RSAT_POS_HF[0] = array3[0].GetDouble();
    ret.SEC_ISL_RSAT_POS_HF[1] = array3[1].GetDouble();
    ret.SEC_ISL_RSAT_POS_HF[2] = array3[2].GetDouble();

    auto array4 = obj["SEC_ISL_RSAT_VEL_HF"].GetArray();
    ret.SEC_ISL_RSAT_VEL_HF[0] = array4[0].GetDouble();
    ret.SEC_ISL_RSAT_VEL_HF[1] = array4[1].GetDouble();
    ret.SEC_ISL_RSAT_VEL_HF[2] = array4[2].GetDouble();

    auto array5 = obj["SEC_ISL_TSAT_POS_MS"].GetArray();
    ret.SEC_ISL_TSAT_POS_MS[0] = array5[0].GetDouble();
    ret.SEC_ISL_TSAT_POS_MS[1] = array5[1].GetDouble();
    ret.SEC_ISL_TSAT_POS_MS[2] = array5[2].GetDouble();

    auto array6 = obj["SEC_ISL_TSAT_VEL_MS"].GetArray();
    ret.SEC_ISL_TSAT_VEL_MS[0] = array6[0].GetDouble();
    ret.SEC_ISL_TSAT_VEL_MS[1] = array6[1].GetDouble();
    ret.SEC_ISL_TSAT_VEL_MS[2] = array6[2].GetDouble();

    auto array7 = obj["SEC_ISL_RSAT_POS_MS"].GetArray();
    ret.SEC_ISL_RSAT_POS_MS[0] = array7[0].GetDouble();
    ret.SEC_ISL_RSAT_POS_MS[1] = array7[1].GetDouble();
    ret.SEC_ISL_RSAT_POS_MS[2] = array7[2].GetDouble();

    auto array8 = obj["SEC_ISL_RSAT_VEL_MS"].GetArray();
    ret.SEC_ISL_RSAT_VEL_MS[0] = array8[0].GetDouble();
    ret.SEC_ISL_RSAT_VEL_MS[1] = array8[1].GetDouble();
    ret.SEC_ISL_RSAT_VEL_MS[2] = array8[2].GetDouble();

    ret.SEC_ISL_CLER = obj["SEC_ISL_CLER"].GetDouble();

    auto array9 = obj["SEC_ISL_RPS_HF"].GetArray();
    ret.SEC_ISL_RPS_HF[0] = array9[0].GetDouble();
    ret.SEC_ISL_RPS_HF[1] = array9[1].GetDouble();
    ret.SEC_ISL_RPS_HF[2] = array9[2].GetDouble();

    auto array10 = obj["SEC_ISL_RVL_HF"].GetArray();
    ret.SEC_ISL_RVL_HF[0] = array10[0].GetDouble();
    ret.SEC_ISL_RVL_HF[1] = array10[1].GetDouble();
    ret.SEC_ISL_RVL_HF[2] = array10[2].GetDouble();

    auto array11 = obj["SEC_ISL_RPS_ER"].GetArray();
    ret.SEC_ISL_RPS_ER[0] = array11[0].GetDouble();
    ret.SEC_ISL_RPS_ER[1] = array11[1].GetDouble();
    ret.SEC_ISL_RPS_ER[2] = array11[2].GetDouble();

    auto array12 = obj["SEC_ISL_RVL_ER"].GetArray();
    ret.SEC_ISL_RVL_ER[0] = array12[0].GetDouble();
    ret.SEC_ISL_RVL_ER[1] = array12[1].GetDouble();
    ret.SEC_ISL_RVL_ER[2] = array12[2].GetDouble();

    ret.SEC_ISL_RVL_HD = obj["SEC_ISL_RVL_HD"].GetDouble();
    ret.SEC_ISL_TL = obj["SEC_ISL_TL"].GetDouble();

    ret.EAR_APD = obj["EAR_APD"].GetDouble();
    ret.EAR_NED = obj["EAR_NED"].GetDouble();
    ret.EAR_NER = obj["EAR_NER"].GetDouble();

    ret.SEC_ISL_MWR_HF = obj["SEC_ISL_MWR_HF"].GetDouble();
    ret.SEC_ISL_MWV_HF = obj["SEC_ISL_MWV_HF"].GetDouble();
    ret.SEC_ISL_MWA_HF = obj["SEC_ISL_MWA_HF"].GetDouble();
    ret.SEC_ISL_MWT_HF = obj["SEC_ISL_MWT_HF"].GetDouble();
    ret.SEC_ISL_MWR_ER = obj["SEC_ISL_MWR_ER"].GetDouble();
    ret.SEC_ISL_MWV_ER = obj["SEC_ISL_MWV_ER"].GetDouble();
    ret.SEC_ISL_MWA_ER = obj["SEC_ISL_MWA_ER"].GetDouble();
    ret.SEC_ISL_MWT_ER = obj["SEC_ISL_MWT_ER"].GetDouble();

    ret.SEC_ISL_LSR_HF = obj["SEC_ISL_LSR_HF"].GetDouble();
    ret.SEC_ISL_LSV_HF = obj["SEC_ISL_LSV_HF"].GetDouble();
    ret.SEC_ISL_LSA_HF = obj["SEC_ISL_LSA_HF"].GetDouble();
    ret.SEC_ISL_LST_HF = obj["SEC_ISL_LST_HF"].GetDouble();
    ret.SEC_ISL_LSR_ER = obj["SEC_ISL_LSR_ER"].GetDouble();
    ret.SEC_ISL_LSV_ER = obj["SEC_ISL_LSV_ER"].GetDouble();
    ret.SEC_ISL_LSA_ER = obj["SEC_ISL_LSA_ER"].GetDouble();
    ret.SEC_ISL_LST_ER = obj["SEC_ISL_LST_ER"].GetDouble();

    return ret;
}

};

}


#endif